/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.perutaxi.datos;

import com.perutaxi.entidades.eSolicitudCliente;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

/**
 *
 * @author PeruTaxi
 */
public class dSolicitudCliente implements Serializable {

    public static Date obtenerFechaActual() {
        Calendar calendario = Calendar.getInstance();
        return calendario.getTime();
    }

    public static eSolicitudCliente inicializar() {
        eSolicitudCliente solCliente = new eSolicitudCliente();
        solCliente.setNombres("");
        solCliente.setDni("");
        solCliente.setTelefono("");
        solCliente.setEmail("");
        solCliente.setDireccion("");
        solCliente.setFechaSolicitud(new Timestamp(obtenerFechaActual().getTime()));
        solCliente.setEstado("P");

        return solCliente;
    }

    public static eSolicitudCliente obtenerPorId(Long id) throws Exception {
        eSolicitudCliente solCliente = new eSolicitudCliente();
        Connection cnx = Conexion.getConexion();
        String query = "SELECT * FROM SOLICITUD_CLIENTE WHERE ID = " + id;
        try {
            PreparedStatement ps = cnx.prepareCall(query);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                solCliente.setId(rs.getLong(1));
                solCliente.setNombres(rs.getString(2));
                solCliente.setDni(rs.getString(3));
                solCliente.setTelefono(rs.getString(4));
                solCliente.setEmail(rs.getString(5));
                solCliente.setDireccion(rs.getString(6));
                solCliente.setFechaSolicitud(rs.getTimestamp(7));
                solCliente.setEstado(rs.getString(8));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            cnx.close();
        }

        return solCliente;
    }

    public static List<eSolicitudCliente> obtenerTodos() throws Exception {
        List<eSolicitudCliente> lista = new ArrayList<eSolicitudCliente>();
        Connection cnx = Conexion.getConexion();
        String query = "SELECT * FROM SOLICITUD_CLIENTE";
        try {
            PreparedStatement ps = cnx.prepareCall(query);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                eSolicitudCliente solCliente = new eSolicitudCliente();
                solCliente.setId(rs.getLong(1));
                solCliente.setNombres(rs.getString(2));
                solCliente.setDni(rs.getString(3));
                solCliente.setTelefono(rs.getString(4));
                solCliente.setEmail(rs.getString(5));
                solCliente.setDireccion(rs.getString(6));
                solCliente.setFechaSolicitud(rs.getTimestamp(7));
                solCliente.setEstado(rs.getString(8));
                lista.add(solCliente);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            cnx.close();
        }

        return lista;
    }

    public static List<eSolicitudCliente> obtenerSolCliente(eSolicitudCliente filtro) throws Exception {
        List<eSolicitudCliente> lista = new ArrayList<eSolicitudCliente>();
        Connection cnx = Conexion.getConexion();
        String query = "SELECT * FROM SOLICITUD_CLIENTE WHERE ID = ID";
        if (filtro.getId() != null && !filtro.getId().equals(0L)) {
            query += " AND ID = " + filtro.getId();
        } else {
            if (filtro.getDni() != null && !filtro.getDni().equals("")) {
                query += " AND DNI = '" + filtro.getDni().toUpperCase() + "'";
            }
            if (filtro.getEstado() != null && !filtro.getEstado().equals("") && !filtro.getEstado().equals("*")) {
                query += " AND ESTADO = '" + filtro.getEstado().toUpperCase() + "'";
            }
        }
        query += " ORDER BY ID DESC";
        try {
            PreparedStatement ps = cnx.prepareCall(query);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                eSolicitudCliente solCliente = new eSolicitudCliente();
                solCliente.setId(rs.getLong(1));
                solCliente.setNombres(rs.getString(2));
                solCliente.setDni(rs.getString(3));
                solCliente.setTelefono(rs.getString(4));
                solCliente.setEmail(rs.getString(5));
                solCliente.setDireccion(rs.getString(6));
                solCliente.setFechaSolicitud(rs.getTimestamp(7));
                solCliente.setEstado(rs.getString(8));
                lista.add(solCliente);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            cnx.close();
        }

        return lista;
    }

    public static boolean guardar(eSolicitudCliente solCliente) throws Exception {
        boolean retorno = true;
        Connection cnx = Conexion.getConexion();
        String query = "INSERT INTO SOLICITUD_CLIENTE VALUES (?,?,?,?,?,?,?,?)";
        try {
            PreparedStatement ps = cnx.prepareStatement(query);
            ps.setLong(1, solCliente.getId());
            ps.setString(2, solCliente.getNombres().toUpperCase());
            ps.setString(3, solCliente.getDni().toUpperCase());
            ps.setString(4, solCliente.getTelefono().toUpperCase());
            ps.setString(5, solCliente.getEmail().toUpperCase());
            ps.setString(6, solCliente.getDireccion().toUpperCase());
            ps.setTimestamp(7, solCliente.getFechaSolicitud());
            ps.setString(8, solCliente.getEstado());
            ps.execute();
        } catch (Exception e) {
            e.printStackTrace();
            retorno = false;
        } finally {
            cnx.close();
        }

        return retorno;
    }

    public static boolean actualizar(eSolicitudCliente solCliente) throws Exception {
        boolean retorno = true;
        Connection cnx = Conexion.getConexion();
        String query = "UPDATE SOLICITUD_CLIENTE SET NOMBRES = ?, DNI = ?, TELEFONO = ?, EMAIL = ?, DIRECCION = ?, ESTADO = ? WHERE ID = ?";
        try {
            PreparedStatement ps = cnx.prepareStatement(query);
            ps.setString(1, solCliente.getNombres().toUpperCase());
            ps.setString(2, solCliente.getDni().toUpperCase());
            ps.setString(3, solCliente.getTelefono().toUpperCase());
            ps.setString(4, solCliente.getEmail().toUpperCase());
            ps.setString(5, solCliente.getDireccion().toUpperCase());
            ps.setString(6, solCliente.getEstado().toUpperCase());
            ps.setLong(7, solCliente.getId());
            ps.execute();
        } catch (Exception e) {
            e.printStackTrace();
            retorno = false;
        } finally {
            cnx.close();
        }

        return retorno;
    }
}
